home *** CD-ROM | disk | FTP | other *** search
/ Gamers Delight 2 / Gamers Delight 2.iso / Aminet / game / misc / TownMaze.lha / TownMaze / src.lzh / finishalleys.c < prev    next >
C/C++ Source or Header  |  1991-08-04  |  2KB  |  63 lines

  1. /*
  2. ** finishalleys.c  Copyright 1991 Kent Paul Dolan,
  3. **                 Mountain View, CA, USA 94039-0755
  4. **
  5. ** Written to satisfy an inquiry on USENet's rec.games.programmer newsgroup.
  6. ** May be freely used or modified in any non-commercial work.  Copyrighted
  7. ** only to prevent patenting by someone else.
  8. */
  9.  
  10. #include <stdio.h>
  11. #include "townmaze.h"
  12. #include "townproto.h"
  13.  
  14. #ifdef __STDC__
  15. void finishalleys()
  16. #else
  17. int finishalleys()
  18. #endif
  19. {
  20.  
  21.   int i, nhbrid;
  22.   int livewalk, targetcell;
  23.  
  24. #if PROGRESS
  25.   if (livect > 0) fprintf(stderr,"Alleys ");
  26. #endif
  27.  
  28.   while(livect > 0)
  29.   {
  30.     targetcell = RANDOM()%livect;
  31.     livewalk = live;
  32.     for (i = 0; i < (targetcell - 1); i++)
  33.       if (livewalk == NOPOINTER)
  34.       {
  35.         fprintf(stderr,"live list too short in finishalleys\n");
  36.         showdebugmaze();
  37.         freespace();
  38.         exit(1);
  39.       }
  40.       else
  41.       {
  42.         livewalk = statlist[livewalk].next;
  43.       }
  44. /*
  45. ** Since this is a live cell, it is supposed to have a street cell
  46. ** neighbor; find one and adopt its street number.  If directions
  47. ** are implemented, then this has to be expanded to pick a random
  48. ** neighbor street fairly and adopt its number and direction.
  49. ** [Done in makestreet(), enabled by the "-1" last parameter.]
  50. */
  51.     for (nhbrid = 0; nhbrid < 4; nhbrid++)
  52.       if (nhbrexists(livewalk,nhbrid))
  53.         if (statlist[nhbris(livewalk,nhbrid)].status == STREET)
  54.         {
  55.           makestreet(livewalk,
  56.                      statlist[nhbris(livewalk,nhbrid)].streetnum,-1);
  57.           break;
  58.         }
  59.   }
  60. /*  fprintf(stderr,"\n"); */
  61.   return;
  62. }
  63.